In general service-oriented web serving architectures there are essentially three roles: service providers, service accessing clients, and registry/mediatory. Any person with a computing node with appropriate software and connection abilities can access a web service. More typically it will be a web service in a business external integration environment, in which an enterprise application can invoke and run external business processes hosted by service providers as web services. To enable effective managing of invocation, most of these clients employ a web service intermediary layer such as simple proxy framework (e.g. WSIF or web service gateways), that cater for different transport protocols. The service providers may describe their service using standards such as the Web Services Description Language (WSDL), which is an XML-based language, that defines web service interface details. A description of Web Services Description Language (WSDL) Version 1.2, Working Draft of 24 Jan. 2003 is available at http://www.w3.org.TR/wsdl12. The standard is published by the Worldwide Web Consortium.
Generally, web service abstracts the client from the underlying hardware, operating system, implementing language, hosting servers, and so on. However, from the client point of view, invoking a service defined by a different interface standard or invoking a service with changed interface requires an understanding of the request/response messages and reformatting the request data to access the changed service. Thus in spite of the automation and abstraction that comes with interacting with a web service, the client still needs to undertake code changes to invoke the new or changed service. This is disadvantageous from the point of view of cost and down time.
A modular approach can be taken to this problem. By taking a modular approach, the various modules of the requesting client can access different port-types of the hosted service implementation defined by an interface. However this approach fails in situations such as binding protocol support, Quality of Service (QOS) restrictions, and interface adaptation.
What is clearly needed is a mechanism that enable a proxy or any other service-specific intermediary to serve clients so that they interact with different service interfaces and service bindings at run time, and are relieved of the service invocation and dealing with interaction level changes. It is desirable also to provide a mechanism that takes care of specific invocation details described in standards such as WSDL, and to provide a mechanism that is self-configured with capabilities to adjust to the properties of the service during the point of invocation.